﻿




	using System.Collections.Generic;
    using System;
	using System.Linq;    
    using System.Data;        
	using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;
using DeklaritModel;

namespace WebSilverlight.Web
{
	[EnableClientAccess()]    
    public partial class PaisDomainService : DomainService
    { 
		#region Properties						
		protected DeklaritModel.PaisDataSet ContextDataSet;
		// Setear Property (global o anivel de entidad o ambas?)
		const int PageSize = 6;
        
        public virtual IPaisDataAdapter DataAdapter 
        {
            get 
            {
				if(DataAdapterFactory.Provider == null) //return null;
					DataAdapterFactory.Provider = new SimpleDataAdapterFactory();

                return DataAdapterFactory.GetPaisDataAdapter(); 
            }
        }
		
		#endregion
        
        private void FillPaisDataSet(DeklaritModel.PaisDataSet dsPaisDataSet1, int page, Int16? PaisId )
        {   
            if (PaisId.HasValue )
            {   
				DataAdapter.Fill(dsPaisDataSet1, PaisId.Value);                            
            }
            else
            {
					if (page == -1)
						DataAdapter.Fill(dsPaisDataSet1);
					else DataAdapter.FillPage(dsPaisDataSet1, (page-1) * PageSize, PageSize);				
            }      
        } 
        private IQueryable<PaisWrapper> GetPage(int pageNumber)
        {
            ContextDataSet = new DeklaritModel.PaisDataSet();
            FillPaisDataSet(ContextDataSet, pageNumber, null );

            EnumerableRowCollection<DataRow> dr = ContextDataSet.Pais.AsEnumerable();
            
			IEnumerable<PaisWrapper> query = from row in            
                            dr
                        select new PaisWrapper
                        {
							PaisId = row.Field<Int16>("PaisId"),
							PaisNombre = row.Field<string>("PaisNombre"),
							PaisMoneda = row.Field<string>("PaisMoneda"),
                        };            
            IQueryable<PaisWrapper> iq = query.AsQueryable();            
            return iq;            
        } 
                       
        public IQueryable<PaisWrapper> GetPaisPage(int pageNumber)
        {
            return GetPage(pageNumber );
        }       
		public IQueryable<PaisWrapper> GetPais()
        {
            return GetPage(-1 );
        }
        private void GetPais(Int16? PaisId)
        {
			ContextDataSet = new DeklaritModel.PaisDataSet();
            FillPaisDataSet(ContextDataSet, -1, PaisId.Value);
        }
		public void UpdatePais(PaisWrapper current)        
        {			
			GetPais(current.PaisId);

            DataRow updateRow = null;
            foreach (DataRow row in ContextDataSet.Pais.Rows)
            {
                updateRow = row;                
                break;
            }

            //var Changes = this.ChangeSet.GetOriginal(current);
			//if (Changes.PaisId != current.PaisId)
                updateRow.SetField("PaisId", current.PaisId);							
			//if (Changes.PaisNombre != current.PaisNombre)
                updateRow.SetField("PaisNombre", current.PaisNombre);							
			//if (Changes.PaisMoneda != current.PaisMoneda)
                updateRow.SetField("PaisMoneda", current.PaisMoneda);							
			DataAdapter.Update(ContextDataSet);    
        }        
        public void InsertPais(PaisWrapper newObj)        
        {			
			DeklaritModel.PaisDataSet  dsPaisDataSet1 = new DeklaritModel.PaisDataSet();            
			PaisDataSet.PaisRow row = dsPaisDataSet1.Pais.NewPaisRow();
			row.PaisId  = newObj.PaisId;
			row.PaisNombre  = newObj.PaisNombre;
			row.PaisMoneda  = newObj.PaisMoneda;
            dsPaisDataSet1.Pais.AddPaisRow(row);
            DataAdapter.Update(dsPaisDataSet1);             
        }
        public void DeletePais(PaisWrapper delObj)        
        {			
			DeklaritModel.PaisDataSet  dsPaisDataSet1 = new DeklaritModel.PaisDataSet();            
			PaisDataSet.PaisRow row = dsPaisDataSet1.Pais.NewPaisRow();
			row.PaisId  = delObj.PaisId;
			row.PaisNombre  = delObj.PaisNombre;
			row.PaisMoneda  = delObj.PaisMoneda;
            dsPaisDataSet1.Pais.RemovePaisRow(row);
            DataAdapter.Update(dsPaisDataSet1);             
        }
        [Invoke]
        public int ItemCount()
        {            
            return DataAdapter.GetRecordCount();
        }
	}
}